DataBase Programming

Programming: 프로그램을 설계하고 소스코드를 작성하여 디버깅하는 과정
DB Programming: DBMS에 데이터를 정의하고, 저장된 데이터를 읽어와 데이터를 변경하는
    프로그램을 작성하는 과정, 일반 프로그램과 달리 SQL을 포함

데이터 베이스 프로그래밍 중에서도 SQL Interface와 Embedded Programming을 많이 사용한다.
DB Programming 방법
- SQL 전용 언어를 사용
- 일반 프로그래밍 언어에 SQL을 삽입하여 사용하는 방법
- 웹 프로그래밍 언어에 SQL을 삽입하여 사용하는 방법
- 4GL(4th Generation Language)

1세대: 기계어, 2세대:어셈블리어, 3세대: 절차지향언어, 4세대:순차형 언어 이후 언어
4GL은 사용자 중심의 언어로 절차지향적인 틀에서 벗어난 언어 JAVA, C++과 같은 객체 지향의 언어를 포함
PL/SQL(Procedural Language/Structured Query Language)
응용 프로그램을 작성하는데 사용하는 오라클 전용 SQL 언어

SQL 전용 언어로 SQL문에 변수, 제어, 입출력 등의 프로그래밍 기능을 추가하여 SQL만으로 처리하기 어려운 문제 해결

SQL Developer에서 작성하고 컴파일 후 결과를 실행
PL/SQL에는 프로시저, 트리거, 사용자 정의 함수 등이 있다.
프로시저
프로시저를 정의하려면 CREATE PROCEDURE 문을 사용해야 한다.
PL/SQL 선언부(BEGIN)과 실행부(END)로 구성된다.

선언부에서는 변수와 매개변수를 선언하고, 실행부에서는 프로그램 로직을 구현
매개변수(parameter)는 저장 프로시저가 호출될 때, 그 프로시저에 전달되는 값
변수(Variable)은 저장 프로시저나 트리거 내에서 사용되는 값

주석은 /* */ 사이 혹은 — 다음에 기술한다.


프로시저가 한번에 한 행씩 처리하기 원하는 경우 커서(Cursor)를 활용하여 테이블의 행을 순서대로 가르키도록 하고,
필요한 경우에 그 행의 데이터를 추출할 수 있다.
트리거
트리거(Trigger)는 데이터의 변경(INSERT, DELETE, UPDATE)문이 실행될 때, 자동으로 실행되는 프로시저
BEFORE 트리거와 AFTER 트리거가 있다.


사용자 정의 함수
사용자 정의 함수는 수학의 함수와 마찬가지로 입력된 값을 가공하여 결과를 돌려준다.
sequence & procedure
-- sequence
create sequence seq_sqwon_sabun
start with 201
increment by 2
maxvalue 299;
-- procedure
create or replace procedure p_sawon_ex_in
(name sawon.saname%type,
pay sawon.sapay%type,
job sawon.sajob%type,
sex sawon.sasex%type,
magr sawon.samgr%type,
mgr sawon.samgr%type,
deptname dept.dname%type)
is
commval sawon.comm%type;
begin
if(depname='' or deptnam='')then
comval:=pay*0.1;
else
comval:=0;
end if;
insert into sawon_ex(sabun, sahire, saname, sapay, sajob, sasex, samgm deptno, comm)
values(seq_sawon_sabun.nextval, sysdate, name, pay, job, sex, mgr,
(select deptno from dept where dname=deptname), commval);
end;
/
PL/SQL 함수
create or replace function f_graph
(num number)
return varchar2
is
cnt number(3):=num/100;
begin
return lpad('*', cnt, '*'); --lpad return value
end;
/